create database Acesso;
GO

USE acesso;

CREATE TABLE Local(cd_sequencial int NOT NULL IDENTITY,
                   tp_local char(1) NOT NULL CHECK (tp_local IN ('1','2','3','4')),
				   nm_local varchar(40),
				   cd_local varchar(4),
				   cd_local_referencia int);
GO

CREATE TABLE Local_Cartao(	cd_cartao int NOT NULL IDENTITY,
							cd_local int NOT NULL ); 
GO

CREATE TABLE Cartao(cd_cartao int NOT NULL IDENTITY)
GO

CREATE TABLE Cartao_Pessoa(	cd_cartao int NOT NULL,
							cd_pessoa int NOT NULL,
							dt_ativacao datetime NOT NULL,
							dt_desativacao datetime
);
GO

CREATE TABLE Pessoa(cd_pessoa int NOT NULL IDENTITY,
		    nm_pessoa varchar(40),
		    cd_rg varchar(9),
		    cd_cpf varchar(11),
		    tp_sexo char(1) CHECK (tp_sexo IN ('M','F')), 
		    cd_celular varchar(8));
GO

CREATE TABLE Pessoa_Complemento(cd_pessoa int NOT NULL,
				tp_complemento char(1) NOT NULL,
				ds_login varchar(12),
				ds_senha varchar(8),
				dt_inicio datetime,
				cd_matricula int,
				cd_carteira_trabalho varchar(13),
				cd_pis varchar(11));
GO

CREATE TABLE Departamento(cd_departamento int NOT NULL IDENTITY,
			  ds_departamento varchar(20));
GO

CREATE TABLE Emprestimo(cd_emprestimo int NOT NULL IDENTITY,
			dt_emprestimo datetime NOT NULL,
			dt_devolucao datetime,
			cd_isbn bigint NOT NULL,
			cd_cartao int NOT NULL);
GO

CREATE TABLE Endereco(cd_pessoa int NOT NULL, 
		      cd_cep char(8) NOT NULL,
		      cd_numero int);
GO

CREATE TABLE CEP(cd_cep char(8),
		 ds_logradouro varchar(60),
		 cd_bairro int NOT NULL);
GO

CREATE TABLE Bairro(cd_bairro int NOT NULL IDENTITY, 
					nm_bairro varchar(40),
					cd_cidade int NOT NULL);
GO

CREATE TABLE Cidade(cd_cidade int NOT NULL IDENTITY,
				    nm_cidade varchar(40),	
				    sg_cidade char(2) NOT NULL);
GO

CREATE TABLE Estado(sg_estado char(2) NOT NULL,
				    nm_estado varchar(30));
GO

CREATE TABLE Categoria(	cd_categoria int NOT NULL IDENTITY,
						nm_categoria varchar(30));
GO

CREATE TABLE Livro_Categoria(cd_isbn bigint NOT NULL,
						     cd_categoria int NOT NULL);
GO

CREATE TABLE Livro(	cd_isbn bigint NOT NULL,
					nm_titulo varchar(100),
					cd_edicao int,
					ic_situacao char(1) CHECK (ic_situacao IN ('0','1')),
					cd_editora int NOT NULL,
					cd_idioma int NOT NULL
				);
GO

CREATE TABLE Livro_Autor(	cd_isbn bigint NOT NULL,
							cd_autor int NOT NULL);
GO

CREATE TABLE Autor(	cd_autor int NOT NULL IDENTITY,
					nm_autor varchar(50));
GO

CREATE TABLE Editora(cd_editora int NOT NULL IDENTITY,
                     nm_editora varchar(40),
				     ds_site varchar(150));
GO

CREATE TABLE Idioma(cd_idioma int NOT NULL IDENTITY,
				    ds_idioma varchar(40));
GO